<?php if (!defined('BASEPATH'))exit('No direct script access allowed');

class Akademik extends CI_Controller
{
	
	function __construct()
	{
		parent::__construct();
		$this->load->library('encrypt');
	}

    public function index()
    {
		$data['select_tahun'] = $this->db->from('tahun')->order_by('id_tahun', 'ASC')->get();
		$data['id_tahun'] = $this->db->select('id_tahun')->from('tahun')->where('tahun_aktif', '1')->get()->row()->id_tahun;
        $this->template->admin('admin/v_akademik', $data, 4, "Laporan Akademik");
    }
	
	private function _pdf($url, $data, $nama_pdf, $cetak = TRUE, $orientation = 'portrait')
	{
		$this->load->helper('dompdf');
		$html = $this->load->view($url, $data, $cetak);
		if($cetak == TRUE) pdf_create($html, $nama_pdf, true, 'letter', $orientation);
	}	
	
	public function kelas()
	{
		$id_tahun = $this->encrypt->decode($this->input->post('id_tahun'));
		$id_kelas = $this->encrypt->decode($this->input->post('id_kelas'));
		if($id_tahun != "")
		{
			$r_kelas = $this->db->select('k.id_kelas, k.nama_kelas, COUNT(sk.id_siswa) as jumlah_siswa')
								->from('data_kelas k')
								->join('siswa_kelas sk','k.id_kelas=sk.id_kelas', 'LEFT')
								->where('k.id_tahun', $id_tahun)
								->group_by('k.id_kelas')
								->order_by('k.nama_kelas', 'ASC')
								->get();
			if($r_kelas->num_rows() > 0)
			{
				echo '<select id="id_kelas" name="id_kelas" class="uniformselect2">';
				foreach($r_kelas->result() as $v_kelas)
                                {
                                    $cek = '';
                                    if($v_kelas->id_kelas == $id_kelas) $cek = 'selected';
                                    echo '<option value="'.$this->encrypt->encode($v_kelas->id_kelas).'" '.$cek.'>'.$v_kelas->nama_kelas.' ('.$v_kelas->jumlah_siswa.' siswa)</option>';
                                }
				echo '</select>';
					
			}
			else
			{
				echo '<select id="id_kelas" name="id_kelas" class="uniformselect2">';
				echo '<option value="">-data tidak ditemukan-</option>';
				echo '</select>';
			}
			echo '<script>if(jQuery().uniform)jQuery(\'select.uniformselect2\').uniform();</script>';
		}
		else show_404();
	}
	
	public function laporan_download($laporan = null)
	{
		$link = $this->input->get('link');
		$id_tahun = $this->encrypt->decode($this->input->get('id_tahun'));
		$id_kelas = $this->encrypt->decode($this->input->get('id_kelas'));
		$berhasil = FALSE;
		switch($laporan)
		{
			case url_title("Data Tahunan"):
				if($id_tahun != null)
				{
					switch($link)			
					{
						case url_title("Data Siswa"):
							$berhasil = $this->_data_siswa_tahun($id_tahun);
						break;				
						case url_title("Data Kelas"):
							$berhasil = $this->_data_kelas_tahun($id_tahun);
						break;
					}
				}
			break;
			case url_title("Data Kelas"):
				if($id_tahun != null && $id_kelas != null)
				{
					switch($link)
					{
						case url_title("Daftar Siswa dalam Kelas"):
							$berhasil = $this->_daftar_siswa_dalam_kelas($id_tahun, $id_kelas);
						break;
						case url_title("Daftar Kehadiran Siswa"):
							$berhasil = $this->_daftar_kehadiran_siswa($id_tahun, $id_kelas);
						break;
						case url_title("Data Jadwal Pelajaran"):
							$berhasil = $this->_data_jadwal_pelajaran($id_tahun, $id_kelas);
						break;
					}
				}
			break;
		}

		if ($berhasil === FALSE)
		{
		   show_404();
		}
	}
	
	private function _data_siswa_tahun($id_tahun)
	{
		$data['rslt_siswa'] = $this->db->select('t.tahun_angkatan, s.nomor_induk, s.nama_siswa, s.jenis_kelamin, s.telepon, s.telepon_ortu, s.asal_sekolah, s.nilai_un, s.no_stb, s.lulus')
										->from('data_siswa s')
										->join('tahun t', 't.id_tahun=s.id_tahun', 'INNER')
										->where('t.id_tahun', $id_tahun)
										->order_by('s.nomor_induk', 'ASC')
										->get();
		if($data['rslt_siswa']->num_rows > 0)
		{
			$data['tanggal'] = ubah_tgl(date('Y-m-d'));
			$nama_pdf = 'Data Siswa Tahun Angkatan '.$data['rslt_siswa']->row()->tahun_angkatan.' | '.$data['tanggal'];
			$this->_pdf('admin/laporan/l_tahun_data_siswa', $data, $nama_pdf, TRUE, 'landscape');
			return TRUE;
		}
		else
		return FALSE;
	}
	
	private function _data_kelas_tahun($id_tahun)
	{
		$data['rslt_kelas'] = $this->db->select('ks.status_kelas, t.tahun_angkatan, ks.tingkat_kelas, k.nama_kelas, g.nama_guru, COUNT(sk.id_siswa) AS jumlah_siswa, k.keterangan')
										->from('data_kelas k')
										->join('tahun t', 't.id_tahun=k.id_tahun', 'INNER')
										->join('kelas_stat ks', 'ks.id_kelstat=k.id_kelstat', 'INNER')
										->join('siswa_kelas sk', 'sk.id_kelas=k.id_kelas', 'LEFT')
										->join('data_wali w', 'w.kode_kelas=k.id_kelas', 'LEFT')
										->join('data_guru g', 'g.id=w.kode_guru', 'LEFT')
										->where('t.id_tahun', $id_tahun)
										->group_by('k.id_kelas')
										->order_by('ks.tingkat_kelas', 'ASC')
										->order_by('ks.status_kelas', 'ASC')
										->order_by('k.nama_kelas', 'ASC')
										->get();
		if($data['rslt_kelas']->num_rows > 0)
		{
			$data['tanggal'] = ubah_tgl(date('Y-m-d'));
			$nama_pdf = 'Data Kelas Tahun Angkatan '.$data['rslt_kelas']->row()->tahun_angkatan.' | '.$data['tanggal'];
			$this->_pdf('admin/laporan/l_tahun_data_kelas', $data, $nama_pdf, TRUE);
			return TRUE;
		}
		else
		return FALSE;
	}
	
	private function _daftar_siswa_dalam_kelas($id_tahun, $id_kelas)
	{
		$data['data_siswa'] = $this->db->select('t.tahun_angkatan, ks.status_kelas, ks.tingkat_kelas, dk.nama_kelas, dg.nama_guru, dg.nomor_induk as nip, ds.nomor_induk, ds.nama_siswa, ds.jenis_kelamin')
										->from('siswa_kelas sk')
										->join('data_siswa ds', 'ds.id=sk.id_siswa', 'INNER')
										->join('data_kelas dk', 'dk.id_kelas=sk.id_kelas', 'INNER')
										->join('kelas_stat ks', 'ks.id_kelstat=dk.id_kelstat', 'INNER')
										->join('tahun t', 't.id_tahun=sk.id_tahun', 'INNER')
										->join('data_wali dw', 'dw.kode_kelas=dk.id_kelas', 'LEFT')
										->join('data_guru dg', 'dg.id=dw.kode_guru', 'LEFT')
										->where('sk.id_kelas', $id_kelas)
										->where('t.id_tahun', $id_tahun)
										->group_by('ds.id')
										->order_by('ds.nomor_induk', 'ASC')
										->get();
		if($data['data_siswa']->num_rows() > 0)
		{
			$data['tanggal'] = ubah_tgl(date('Y-m-d'));
                        $data['semester'] = $this->input->get('semester');
			$nama_pdf = 'Daftar Siswa '.$data['data_siswa']->row()->tahun_angkatan.' Kelas '.$data['data_siswa']->row()->nama_kelas.' | '.$data['tanggal'];
			$this->_pdf('admin/laporan/l_kelas_daftar_siswa_dalam_kelas', $data, $nama_pdf, TRUE, 'landscape');
			return TRUE;
		}
		else return FALSE;
	}
	private function _data_jadwal_pelajaran($id_tahun, $id_kelas)
	{
            $data['data_jadwal'] = $this->db->select('t.tahun_angkatan, dk.nama_kelas, ks.tingkat_kelas, ks.status_kelas, wali.nama_guru AS wali_kelas, wali.nomor_induk AS induk_wali, jp.hari, jp.jam_pelajaran, jam_pelajaran(jp.jam_pelajaran) AS waktu, tp.nama_pelajaran, dg.nama_guru AS pengajar, ru.nama_kelas AS ruangan')
                                            ->from('jadwal_pelajaran jp')
                                            ->join('tahun t', 't.id_tahun=jp.id_tahun', 'INNER')
                                            ->join('data_kelas dk', 'dk.id_kelas=jp.id_kelas', 'INNER')
                                            ->join('mata_pelajaran mp', 'mp.id=jp.id_mapel', 'INNER')
                                            ->join('data_kelas ru', 'ru.id_kelas=jp.ruangan_kelas', 'INNER')
                                            ->join('data_guru dg', 'dg.id=mp.kode_guru', 'INNER')
                                            ->join('tabel_pelajaran tp', 'tp.kode_pelajaran=mp.kode_pelajaran', 'INNER')
                                            ->join('kelas_stat ks', 'ks.id_kelstat=dk.id_kelstat', 'INNER')
                                            ->join('data_wali dw', 'dw.kode_kelas=dk.id_kelas', 'LEFT')
                                            ->join('data_guru wali', 'wali.id=dw.kode_guru', 'LEFT')
                                            ->where('dk.id_tahun', $id_tahun)
                                            ->where('dk.id_kelas', $id_kelas)
                                            ->order_by('jp.hari', 'ASC')
                                            ->order_by('jp.jam_pelajaran', 'ASC')
                                            ->get()
                                            ;
            if($data['data_jadwal']->num_rows() > 0)
            {
                $data['tanggal'] = ubah_tgl(date('Y-m-d'));
                $data['semester'] = $this->input->get('semester');
                $nama_pdf = 'Daftar Jadwal Pelajaran '.$data['data_jadwal']->row()->tahun_angkatan.' Kelas '.$data['data_jadwal']->row()->nama_kelas.' | '.$data['tanggal'];
                $this->_pdf('admin/laporan/l_kelas_daftar_jadwal_pelajaran', $data, $nama_pdf, TRUE, 'portrait');
		return TRUE;
            }
            else
		return FALSE;
	}
        
	private function _daftar_kehadiran_siswa($id_tahun, $id_kelas)
	{
            $data['semester'] = $this->input->get('semester');
            if($data['semester'] == 'GANJIL')
                $where = ' AND MONTH(ab.tanggal) >= 7 AND MONTH(ab.tanggal) <= 12';
            elseif($data['semester'] == 'GENAP')
                $where = ' AND MONTH(ab.tanggal) >= 1 AND MONTH(ab.tanggal) <= 6';
            $data['data_siswa'] = $this->db->select('t.tahun_angkatan, ks.status_kelas, ks.tingkat_kelas, dk.nama_kelas, dg.nama_guru, dg.nomor_induk as nip, ds.nomor_induk, ds.nama_siswa, ds.jenis_kelamin,
 COUNT(IF(ab.status = 1, ab.id , NULL )) AS hadir,
 COUNT(IF(ab.status = 2, ab.id , NULL )) AS izin,
 COUNT(IF(ab.status = 3, ab.id , NULL )) AS sakit,
 COUNT(IF(ab.status = 0, ab.id , NULL )) AS tanpa_keterangan', FALSE)
										->from('siswa_kelas sk')
										->join('data_siswa ds', 'ds.id=sk.id_siswa', 'INNER')
										->join('data_kelas dk', 'dk.id_kelas=sk.id_kelas', 'INNER')
										->join('kelas_stat ks', 'ks.id_kelstat=dk.id_kelstat', 'INNER')
										->join('tahun t', 't.id_tahun=sk.id_tahun', 'INNER')
										->join('absensi_siswa ab', 'ab.id_siswa=sk.id_siswa'.$where, 'LEFT')
										->join('data_wali dw', 'dw.kode_kelas=dk.id_kelas', 'LEFT')
										->join('data_guru dg', 'dg.id=dw.kode_guru', 'LEFT')
										->where('sk.id_kelas', $id_kelas)
										->where('t.id_tahun', $id_tahun)
										->group_by('ds.id')
										->order_by('ds.nomor_induk', 'ASC')
										->get();
		if($data['data_siswa']->num_rows() > 0)
		{
			$data['tanggal'] = ubah_tgl(date('Y-m-d'));
			$nama_pdf = 'Daftar Siswa '.$data['data_siswa']->row()->tahun_angkatan.' Kelas '.$data['data_siswa']->row()->nama_kelas.' | '.$data['tanggal'];
			$this->_pdf('admin/laporan/l_kelas_daftar_absensi_siswa', $data, $nama_pdf, TRUE, 'portrait');
			return TRUE;
		}
		else return FALSE;
	}
}

/* End of file akademik.php */
/* Location: ./application/controllers/admin/akademik.php */